#!/usr/bin/env python
# coding: utf-8

# In[18]:


# range(stop) -> range对象范围(start, stop[， step]) ->范围对象
# 返回一个对象，该对象按步骤生成从start(包含)到stop(排除)的整数序列。range(i, j)生成i, i+1, i+2，…j - 1。
# start默认值为0,stop被省略!range(4)生成0、1、2、3。
# 这些正是包含4个元素的列表的有效索引。
# 当给定步骤时，它指定递增(或递减)。
# for-->forever-->不断地，循环
# print格式化输出
for i in range(9, 0, -1):  # -1表示倒着走
    print(i)    


# In[19]:


for j in range(9, 0, -2):  # -2表示走两步取一步，再从当前步走两步取一步 
    print(j, end = ' ')  #默认print输出每个值时换行，现在将end后换行'\n',换成空格' ',取消换行


# In[25]:


n = 10
for i in range(9):
    for j in range(1, n):
        print(j, end = ' ')
    print()  # 默认执行完一行j的打印后换行
    n -= 1  # n = n - 1


# In[34]:


for i in range(9, 0, -1):
    for j in range(1,i):
        print(j, end = ' ')
    print()


# In[66]:


for i in range(1, 10):
    for j in range(1, 1 + i):
        print(f"{j} * {i} = {str(j*i).ljust(2)}", end = ' ')
    print()
    print('\n')
    for j in range(1, 1 + i):   
        print(f"{j} * {i} = {j * i:3}", end = ' ')  # {j*i:n} 冒号后写几，就保留n+1为有效位数，保留位数小于本身数字位数的，取本身数字位数
    print('\n ')
    print()

    
# 乘法口诀表中文转换
ch_numbers = [' ', '一', '二', '三', '四', '五', '六', '七', '八', '九','零']
numbers = [' ', '1', '2', '3', '4', '5', '6', '7', '8', '9','0']
for i in range(9, 0, -1):
    for j in range(1, i+1):
        result = str(j * i).ljust(2)
        left = ch_numbers[numbers.index(result[0])]
        right = ch_numbers[numbers.index(result[1])]
        print(f"{ch_numbers[j]} * {ch_numbers[i]} = {left}{right}", end =" ")
    print()